Pandas:将pandas groupby的结果合并回DataFrame

您所在的位置:网站首页 pandas count和groupby一起用 Pandas:将pandas groupby的结果合并回DataFrame

Pandas:将pandas groupby的结果合并回DataFrame

2024-06-14 01:52| 来源: 网络整理| 查看: 265

Pandas:将pandas groupby的结果合并回DataFrame

在数据分析领域中,Pandas是一个非常流行的Python库。我们可以使用Pandas对数据进行处理,以便更轻松地分析它们。其中,groupby()是一个十分有用的函数,可以让我们对数据进行分组。但是,使用groupby()函数后,我们有时候需要将处理后的结果重新合并回原始的DataFrame中。本文将介绍如何将pandas groupby的结果合并回DataFrame。

阅读更多:Pandas 教程

什么是pandas groupby函数?

首先,让我们来介绍一下groupby()函数。该函数可以按照我们指定的列或者多列,对数据集进行分组。例如,我们可以使用下面的代码对数据集进行分组:

import pandas as pd data = {'Name': ['John', 'Amy', 'Mike', 'Ann','John', 'Amy'], 'Gender': ['M', 'F', 'M', 'F', 'M', 'F'], 'Salary': [5000, 6000, 4500, 7000, 5500, 6500]} df = pd.DataFrame(data) grouped = df.groupby(['Name', 'Gender']) print(grouped.mean())

输出结果如下:

Salary Name Gender Amy F 6250.0 John M 5250.0 Mike M 4500.0 Ann F 7000.0

这里,我们对数据集按照”Name”和”Gender”两列进行了分组。接着,我们计算了每个分组的平均工资,并使用mean()函数输出了结果。

将pandas groupby的结果合并回DataFrame

现在,我们已经知道如何使用groupby()函数进行数据分组。但是,当我们需要将处理后的结果重新合并回原始的DataFrame中时,应该如何实现呢?下面将介绍三种不同的方法:

方法一:使用merge()函数

使用merge()函数可以将groupby结果重新合并到原始DataFrame中。例如,我们可以使用下面的代码实现:

import pandas as pd data = {'Name': ['John', 'Amy', 'Mike', 'Ann','John', 'Amy'], 'Gender': ['M', 'F', 'M', 'F', 'M', 'F'], 'Salary': [5000, 6000, 4500, 7000, 5500, 6500]} df = pd.DataFrame(data) grouped = df.groupby(['Name', 'Gender']).mean().reset_index() merged = pd.merge(df, grouped, on=['Name', 'Gender'], how='left') print(merged)

输出结果如下:

Name Gender Salary_x Salary_y 0 John M 5000 5250.0 1 Amy F 6000 6250.0 2 Mike M 4500 4500.0 3 Ann F 7000 7000.0 4 John M 5500 5250.0 5 Amy F 6500 6250.0

这里,我们使用merge()函数将原始的DataFrame和groupby()处理后的结果进行合并。关于merge()函数的详细用法,可以查看Pandas官方文档。

方法二:使用transform()函数

另一种将pandas groupby的结果合并回DataFrame的方法是使用transform()函数。transform()函数可以将分组操作的结果转换为原始数据集的形式,并且可以应用于任何pandas函数,例如mean()、std()等。下面是一个例子:

import pandas as pd data = {'Name': ['John', 'Amy', 'Mike', 'Ann','John', 'Amy'], 'Gender': ['M', 'F', 'M', 'F', 'M', 'F'], 'Salary': [5000, 6000, 4500,7000, 5500, 6500]} df = pd.DataFrame(data) grouped = df.groupby(['Name', 'Gender']) df['Mean Salary'] = grouped['Salary'].transform('mean') print(df)

输出结果如下:

Name Gender Salary Mean Salary 0 John M 5000 5250.0 1 Amy F 6000 6250.0 2 Mike M 4500 4500.0 3 Ann F 7000 7000.0 4 John M 5500 5250.0 5 Amy F 6500 6250.0

这里,我们对数据集按照”Name”和”Gender”两列进行了分组。接着,我们通过transform()函数将分组处理后的结果转换为原始数据集的形式,并添加了一个新列”Mean Salary”,其中存储了每个分组的平均工资。

方法三:使用apply()函数

apply()函数是另一种将pandas groupby的结果合并回DataFrame的方法。我们可以定义一个函数来操作分组的结果,并将它应用于原始的DataFrame。下面是一个例子:

import pandas as pd data = {'Name': ['John', 'Amy', 'Mike', 'Ann','John', 'Amy'], 'Gender': ['M', 'F', 'M', 'F', 'M', 'F'], 'Salary': [5000, 6000, 4500, 7000, 5500, 6500]} df = pd.DataFrame(data) grouped = df.groupby(['Name', 'Gender']) def add_mean_salary(group): mean_salary = group['Salary'].mean() group['Mean Salary'] = mean_salary return group df = grouped.apply(add_mean_salary).reset_index(drop=True) print(df)

输出结果如下:

Name Gender Salary Mean Salary 0 Amy F 6000 6250.0 1 Amy F 6500 6250.0 2 Ann F 7000 7000.0 3 John M 5000 5250.0 4 John M 5500 5250.0 5 Mike M 4500 4500.0

这里,我们定义了一个函数add_mean_salary()来操作分组的结果。在该函数中,我们计算了每个分组的平均工资,并添加了一个新列”Mean Salary”。接着,我们使用apply()函数对原始数据集进行操作,并通过reset_index()函数重新设置索引。

总结

在本文中,我们介绍了如何将pandas groupby的结果合并回DataFrame中。我们介绍了三种不同的方法,包括使用merge()函数、transform()函数和apply()函数。这些方法都可以将处理后的结果重新合并回原始的DataFrame中。在实际的数据分析中,我们应该根据具体情况选择合适的方法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3